/**
 * 
 * @param {object} source 源对象 
 */
 export const deepClone = (source) => {
    console.log(source);
    const newObj = Array.isArray(source) ? [] : {} //新对象（目标对象）
    /**
     * 
     * @param {object} dest 目标对象
     * @param {object} sour 源对象
     */
    const clone = (dest, sour) => {
        for (const key in sour) {
            if (Object.hasOwnProperty.call(sour, key)) {
                const item = sour[key];
                if(item instanceof RegExp){
                    dest[key]=new RegExp(item);
                }
                else if(item instanceof Date){
                    dest[key]=new Date(item)
                }
               else if (item instanceof Object) {
                    clone((dest[key] = Array.isArray(item) ? [] : {}), item)
                } else {
                    dest[key] = item;
                }
            }
        }
    }
    clone(newObj,source);
    return newObj
}